#include <iostream>
#include <vector>
using namespace std;

int offset = 300;
int visits[620];
bool lights[620];

bool possible(int pos, int n, int t)
{
	if (n > t) return false;

	for (int i = pos - t; i < pos && n > 0; ++i)
		if (!lights[i])
		{
			lights[i] = true;
			--n;
		}

	return 0 == n;
}

int main()
{
	int m, t, r;
	cin >> m >> t >> r;

	if (r > t)
	{
		cout << -1 << endl;
		return 0;
	}

	for (int i = 0; i < m; ++i)
	{
		int tmp;
		cin >> tmp;
		visits[tmp+offset] = r;
	}

	int ret = 0;
	for (int i = 1 + offset; i <= 300 + offset;)
	{
		if (visits[i] > 0)
		{
			// go backwards t
			int j = i-1;
			while (j >= i - t && visits[i] > 0)
			{
				if (!lights[j])
				{
					lights[j] = true;
					++ret;
					for (int k = j + 1; k <= j + t && k < 620; ++k)
						visits[k] -= 1;
				}
				--j;
			}

			// impossible
			if (visits[i] > 0)
			{
				ret = -1;
				break;
			}
		}
		else
		{
			i += 1;
		}
	}

	cout << ret << endl;
}